/**
配置不同的功能使用什么校验方法与通过校验后跳到什么路径
**/

var currRoomId;//当前选择的房间ID

//配置 处理每个服务的校验方法与跳转action
var menuConfig = {
	'personalCheckIn':{//散客入住
		url:'reception/PersonalCheckInBillAction!doPersonalCheckIn.ef',//检验通过后，页面跳转的地址
		validator:validatePersonalCheckIn//要执行的校验方法
	},
	'personsCheckIn':{//同住入住
		url:'reception/PersonalCheckInBillAction!doBeforeAddPersonsCheckIn.ef',//检验通过后，页面跳转的地址
		validator:validatePersonalCheckIn//要执行的校验方法
	},
	'updatePersonalCheckIn':{//修改散客入住
		url:'reception/PersonalCheckInBillAction!doPersonalCheckIn.ef',//检验通过后，页面跳转的地址
		validator:validateUpdatePersonalCheckIn//要执行的校验方法
	},
	'updatePersonsCheckIn':{//修改同住入住
		url:'reception/PersonalCheckInBillAction!doBeforeUpdatePersonsCheckIn.ef',//检验通过后，页面跳转的地址
		validator:validateUpdatePersonsCheckIn//要执行的校验方法
	},
	'guestCompensation':{//客户赔偿
		url:'reception/guestCompensationAction!doList.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'mergeBill':{//合并账单
		url:'reception/MergeBillAction!doList.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'changeRoom':{//换房
		url:'reception/ChangeRoomAction!doList.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'lateCheckOut':{//推迟离店时间
		url:'reception/LateCheckOutAction!doQuery.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'renewalDeposit':{//押金处理
		url:'reception/RenewalDepositAction!doQuery.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'roomStatusManage':{//修改房态
		url:'reception/ChangeRoomStatusAction!doList.ef',//检验通过后，页面跳转的地址
		validator:validateCanChangeRoomStatus//要执行的校验方法
	},
	'temporaryTips':{//临时提示
		url:'guestroom/RoomManageAction!doListRoomTips.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'settlement':{//退房结算
		url:'reception/SettlementAction!doList.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'splitBill':{//拆分账单
		url:'reception/SplitBillAction!doList.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	},
	'increaseConsumption':{//增加消费
		url:'reception/IncreaseConsumptionAction!doList.ef',//检验通过后，页面跳转的地址
		validator:validateIsSomeOneLiving//要执行的校验方法
	}
}

/**
 * 常量 
 */

//入住类型 对应“GUEST_ROOM_RESERVATION_MANAGE”表“DIC_CHECK_IN_TYPE”字段
var CHECK_IN_TYPE = {
	PERSONAL:1,//1:散客
	TEAM:2,//2：团队
	PERSONS:3//3：同住入住
};


//当前房态 对应“ROOM_MANAGE”表“DIC_ROOM_STATE”字段
var ROOM_STATUS = {
	CLEAN:1,//空净房
	LIVING:2,//入住房
	LEAVING:3,//预离房
	DIRTY:4,//空脏房
	REPAIR:5,//维修房
	RESERVATION:6,//预订房
	LOCK:7//锁定房
};

/**
 * 公共方法
 */
//处理点击菜单事件的方法
function handleMenuItemClick(funCode,//功能代码
							roomId//房间ID
						){
	//一个菜单项的配置							
	var oneMenuItemConfig = menuConfig[funCode];
	if(!oneMenuItemConfig){
		alert('服务器名['+funCode+']有误，找不到相应的配置!');
		return;
	}
	
	//校验方法
	var validatorFun = oneMenuItemConfig['validator'];
	//校验通过后，跳到的地址
	var url = oneMenuItemConfig['url'];
	//如果不配置URL，就必需通过此方法执行余下的操作
	var handleFun = oneMenuItemConfig['handleFun'];
	
	var msg;
	if(validatorFun){
		//校验此房间是否符合条件
		msg = validatorFun.call(window,roomId);
	}else{
		msg = '';
	}
	//如果通过校验
	if(!msg){
		if(url){
			var jumpUrl = ctx+'/'+url+'?roomId='+roomId;
			//alert(jumpUrl);
			/**
			var w = window;
			if(window.parent)
				w = w.parent
			w.location = jumpUrl;
			**/
			window.open(jumpUrl,'mainFrame');
		}else{
			//如果不配置URL，就必需通过此方法执行余下的操作
			handleFun.call(window,roomId);
		}
	}else{
		alert(msg);//显示错误提示
	}
}

//初始化右键菜单，各项目的显隐
function initMenu(roomId//房间ID
								){
	var hasMenu = false;
	
	currRoomId = roomId;//当前选择的房间ID									
									
	for(funCode in menuConfig){
		var id = 'menu_'+funCode;
		var menuItem = g(id);//一个菜单项
		
		if(!menuItem){
			continue;
			//alert(funCode+'菜单不存在！');	
		}
		
		//一个菜单项的配置
		var oneMenuItemConfig = menuConfig[funCode];
		//校验方法
		var validatorFun = oneMenuItemConfig['validator'];
		
		var msg;
		if(validatorFun){
			//校验此房间是否符合条件
			msg = validatorFun.call(window,roomId);
		}else{
			msg = '';
		}
		
		//如果通过校验
		if(!msg){
			menuItem.style.display = '';//显示此菜单项
			hasMenu = true;
		}else{
			menuItem.style.display = 'none';//显示此菜单项
		}
	}
	
	return hasMenu;
}

/**
 * 校验方法
 */

//校验是否允许进行散客入住
function  validatePersonalCheckIn(roomId//房间ID
									){
										
	var oneRoomInfo = roomInfos[roomId];//查询出一个房间的信息
	
	var roodStatus = oneRoomInfo['roodStatus'];//当前房态
	var checkInType = oneRoomInfo['checkInType'];//入住类型
	
	if(roodStatus==ROOM_STATUS.CLEAN || roodStatus==ROOM_STATUS.REPAIR || roodStatus==ROOM_STATUS.LOCK){//如果为空净房，维修房，锁定房
		return '';
	}else if(roodStatus==ROOM_STATUS.RESERVATION){//此房间已被预订
		return '';
	}else{
		return '此房间不能进行散客入住操作！';
	}
}

//校验是否允许进行修改散客入住
function  validateUpdatePersonalCheckIn(roomId//房间ID
									){
										
	var oneRoomInfo = roomInfos[roomId];//查询出一个房间的信息
	
	var roodStatus = oneRoomInfo['roodStatus'];//当前房态
	var checkInType = oneRoomInfo['checkInType'];//入住类型
	
	if((roodStatus==ROOM_STATUS.LIVING||roodStatus==ROOM_STATUS.LEAVING)
			&&(checkInType!=CHECK_IN_TYPE.TEAM&&checkInType!=CHECK_IN_TYPE.PERSONS)
			){//如果为散客入住房
		return '';
	}else{
		return '此房间不能进行修改散客入住操作！';
	}
}

//校验是否允许进行修改同住入住
function  validateUpdatePersonsCheckIn(roomId//房间ID
									){
										
	var oneRoomInfo = roomInfos[roomId];//查询出一个房间的信息
	
	var roodStatus = oneRoomInfo['roodStatus'];//当前房态
	var checkInType = oneRoomInfo['checkInType'];//入住类型
	
	if((roodStatus==ROOM_STATUS.LIVING||roodStatus==ROOM_STATUS.LEAVING)
			&&checkInType==CHECK_IN_TYPE.PERSONS
			){//如果为同住入住房
		return '';
	}else{
		return '此房间不能进行修改同住入住操作！';
	}
}

//校验是否为已入住
function  validateIsSomeOneLiving(roomId//房间ID
									){
										
	var oneRoomInfo = roomInfos[roomId];//查询出一个房间的信息
	
	var roodStatus = oneRoomInfo['roodStatus'];//当前房态
	var checkInType = oneRoomInfo['checkInType'];//入住类型
	
	if(roodStatus==ROOM_STATUS.LIVING||roodStatus==ROOM_STATUS.LEAVING)//只有入住房才通过校验
		return '';
	else
		return '只有已入住的房间才能进行此操作!';
}

//校验是否为为空房
function  validateIsCleanRoom(roomId//房间ID
									){
										
	var oneRoomInfo = roomInfos[roomId];//查询出一个房间的信息
	
	var roodStatus = oneRoomInfo['roodStatus'];//当前房态
	var checkInType = oneRoomInfo['checkInType'];//入住类型
	
	if(roodStatus==ROOM_STATUS.CLEAN)//只有空房才通过校验
		return '';
	else
		return '只有空房才能进行此操作!';
}

//校验是否允许修改房态
function validateCanChangeRoomStatus(roomId//房间ID
							){
										
	var oneRoomInfo = roomInfos[roomId];//查询出一个房间的信息
		
	var roodStatus = oneRoomInfo['roodStatus'];//当前房态
	var checkInType = oneRoomInfo['checkInType'];//入住类型
	
	var rs = isValueInArr(roodStatus,[
		ROOM_STATUS.CLEAN,//空净房
		ROOM_STATUS.RESERVATION,//预订
		ROOM_STATUS.DIRTY,//空脏房
		ROOM_STATUS.REPAIR,//维修房
		ROOM_STATUS.LOCK//锁定房
	]);
	
	if(rs)
		return '';
	else
		return '只有"空净房","空脏房","维修房","锁定房"可以有进行"变更房态"操作！';
}